Streaming virtual objects for incorporation in virtual environments

ABSTRACT

A technology is described for streaming object data for a virtual object to a simulation client and dynamically incorporating the virtual object into a simulation environment in response to detecting an interactive event in the simulation environment. An example method may include receiving an indication of an interactive event associated with a simulation environment, where the indication of the interactive event may be sent over a network by a simulation client configured to execute the simulation environment. In response to receiving the indication of the interactive event, object data for a virtual object linked to the interactive event may be identified. An audio stream for the virtual object may be obtained, and the object data and the audio stream may be streamed to the simulation client and the virtual object may be incorporated in the simulation environment.

BACKGROUND

Computing devices are becoming more commonplace and are used for a widevariety of purposes. Every day, people use their computing devices toview, access, and/or interact with various types of content andinformation, especially as computing devices and applications aregrowing in number and in function. As an example, an increasing numberof applications are attempting to meet our growing expectations ofcomputing devices by providing virtual reality, augmented reality, mixedreality, or three-dimensional experiences.

Virtual and augmented reality allows interaction with users (e.g. usingavatars), virtual objects, and information within a virtual reality andaugmented reality environment. When using a virtual and augmentedreality environment, interactions with the environment may includeelectronic input (e.g., via a game controller or input device), verbalinput (e.g., via a microphone), and physical input (e.g., via motionsensing devices) relating to the manipulation of physical objects, andso forth. Virtual objects (e.g., virtual actors, virtual characters,audio visual devices, etc.) may be configured to interact with users(e.g. users represented by an avatar). For example, the appearance,dialog, location, and other attributes of a virtual object can bechanged based in part on virtual user interactions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1a is a block diagram illustrating an example system and method forproviding object data for virtual objects to a simulation client as partof receiving an indication of an interactive event in a simulationenvironment.

FIG. 1b is a block diagram illustrating an example of using contextinformation to identify object data using metadata linked to the contextinformation.

FIG. 2 is a block diagram that illustrates various example componentsincluded in a system for providing object data for virtual objects to asimulation client as part of receiving an indication of an interactiveevent in a simulation environment.

FIG. 3 is a block diagram that illustrates an example computing serviceenvironment that includes a virtual object service.

FIG. 4 is a diagram illustrating an example of a virtual objectconfigured to simulate a one-sided conversation.

FIG. 5 is a diagram that illustrates an example of a virtual objectconfigured to simulate a conversation between two or more entities.

FIG. 6 is a diagram illustrating an example of a virtual objectconfigured to provide a narration that is perceived to originate from afeature located in a simulation environment.

FIG. 7 is a flow diagram that illustrates an example method forincorporating a virtual object into a simulation environment in responseto detecting an interactive event.

FIG. 8 is a flow diagram illustrating an example method for streamingobject data for a virtual object to a simulation client in response toreceiving an indication of an interactive event in a simulationenvironment executed by the simulation client.

FIG. 9 is block diagram illustrating an example of a computing devicethat may be used to execute a method for incorporating a virtual objectinto a simulation environment in response to detecting an interactiveevent.

DETAILED DESCRIPTION

A technology is described for streaming object data for a virtual objectin a simulation environment to a simulation client (e.g., a VR (VirtualReality) client) configured to dynamically incorporate the virtualobject into the simulation environment in response to detecting aninteractive event in the simulation environment. The virtual object maybe used to communicate a message to physical users of simulation clientswho may be represented by virtual users in the simulation environment.As one example, object data for a virtual object may be streamed from aservice provider environment to a simulation client and the virtualobject may be incorporated into a simulation environment as a backgroundelement (e.g., a member of a crowd). The object data may include threedimensional graphics, speech data (speech text or speech audio), and/oranimation instructions for a virtual object. The virtual object may beused to indirectly communicate a message to a virtual user which can bereceived by a physical user. As one example, a message may becommunicated as a conversation between two virtual objects (e.g., twomembers of a crowd) and the message may be “overheard” by a virtual userwho is within a defined distance of the virtual objects. A simulationenvironment may be a three dimensional (3D) generated environment whereportions of the environment or the entire environment are rendered usingcomputer graphics. Examples of a simulation environment may includevirtual reality (VR) environments, augmented reality (AR) environments,mixed reality environments, gaming environments, and other computergenerated environments. A simulation client may be used to render andview the simulation environment and simulation clients may include VRheadsets, AR headset, mixed reality clients, personal computer (PC)clients, mobile device clients, and other similar systems which enableviewing of the simulation environment.

In one example of the technology, customers of a computing serviceprovider may create virtual objects configured to provide messages tousers in a simulation environment. The virtual objects may include, butare not limited to: avatars (e.g., a human avatar, animal avatar,fantasy avatar, etc.) and other simulated objects (e.g., a loud speaker,billboard, magazine, etc.) that may be included in a simulationenvironment to communicate a message. The customers may assign metadatato the virtual objects that link the virtual objects, and/or messagesprovided by the virtual objects, to interactive events. Object data andmetadata for the customers' virtual objects may be stored in a computingservice environment (e.g., a “cloud” environment) using managed storageservices provided by the computing service provider.

A simulation client configured to execute a simulation environment maydetect an interactive event. The interactive event may include an actionperformed by a virtual user, such as entering a virtual space (e.g., avirtual public park, shopping mall, bus station, etc.), passing awaypoint, or interacting with an object in the simulation environment(e.g., turning on a virtual radio or television). The interactive eventmay also include events that include detecting that a virtual user hasbeen in a location for a predetermined amount of time, passed awaypoint, purchased a product, or other like event. In response todetecting the interactive event, object data for a virtual object may beobtained from the computing service provider and the computing serviceprovider may stream the object data from an object storage service tothe simulation client. The simulation client may use the object data toinclude the virtual object in the simulation environment and the virtualobject may be animated to communicate a message to the virtual user andassociated physical user.

In the past, simulation experiences have been limited to fixedsimulation environments, where virtual objects could not be dynamicallyadded to the fixed simulation environment. For example, virtual objectsthat provided dialog were preconfigured features of the fixed simulationenvironment. As a result of the present technology, virtual objects maybe dynamically added to a simulation environment. Further, object datafor a virtual object may be streamed to a simulation client in responseto detecting an interactive event in a simulation environment generatedusing the simulation client. The simulation client may use the objectdata to dynamically add the virtual object to the simulation environmentor animate the virtual object and provide audio or visual output tocommunicate a message.

To further describe the present technology, examples are now providedwith reference to the figures. FIG. 1a is a diagram illustrating a highlevel example of a system 100 and method used to provide object data 104for virtual objects 114 to a simulation client 106 as part of receivingan indication of an interactive event. The system 100 may include acomputing service environment 102 that includes computing resources forstoring object data 104 for virtual objects 114, for retrieving theobject data 104, and streaming the object data 104 to a simulationclient 106 for inclusion in a simulation environment 108 provided by asimulation client 106.

Customers of a computing service provider may store object data 104 forvirtual objects 114 in the computing service environment 102 usingstorage services (e.g., managed storage services) provided by thecomputing service provider. Examples of the storage services may be datastores that store data objects, data files, key value pairs and otherhighly scalable storage services in the computing service environment102. A virtual object 114 may include a graphical entity such as anavatar, human representation, simulated character, simulated animal,large screen monitor, audio output device or the like, which may beconfigured to simulate a human conversation or human presentation thatincludes verbal and visual expressions detected in speech data. Thecustomer may configure one or more virtual objects 114 for inclusion ina simulation environment 108 as background objects (e.g., members of acrowd, passersby, signage, public announcement system speaker, etc.).The customers may configure their virtual objects 114 to indirectlycommunicate a message to a virtual user 110. More specifically, aphysical user of a simulation client 106 may be represented in asimulation environment 108 using a virtual user 110 (e.g., a physicaluser's avatar) and a virtual object 114 may be animated to simulatecommunication of a message that may be communicated to the physical userof the simulation client 106. For example, the message may be providedas background noise, such as, but not limited to: a one-sidedconversation, a conversation between a plurality of virtual objects 114(e.g., virtual characters), or a message played over a large virtualvideo screen and the message may be virtually overheard in thesimulation environment.

The customers of the computing service provider may assign metadata toobject data 104 for virtual objects 114 and the metadata may be used toidentify the virtual objects 114 for inclusion in a simulationenvironment 108. In one example, metadata may be automatically generatedfor virtual objects 114 created by customers as part of uploading objectdata 104 for the virtual objects 114 to an object data store in thecomputing service environment 102. For example, the object data 104 forthe virtual objects 104 may be analyzed for attributes and metadata forthe attributes may be generated and assigned to the object data 104.Illustratively, attributes of a virtual object 114 may include virtualobject attributes (e.g., man, woman, child, animal, inanimate object,etc.), communication attributes (e.g., one-sided conversation, fullconversation, or narration), personality attributes (e.g., loud, quiet,expressive, etc.), situational attributes (e.g., casual, formal,professional, etc.). Object data 104 for a virtual object 114 may beanalyzed for these attributes and metadata describing the attributes maybe generated and assigned to the object data 104. The metadata may bestored with the object data 104 for the virtual object 114. Metadatadescribing the attributes of a virtual object 114 may correlate tocontext information for an interactive event, as described below, andthe metadata may be used to identify the virtual object 114 forinclusion in a simulation environment 108 when linked to the interactiveevent.

In one example, metadata for object data 104 may be stored with theobject data 104 in an object data store. The metadata may identify theobject data 104 in the object data store. Metadata for object data 104may link a virtual object 114 to an interactive event. Morespecifically, the metadata may be used to associate or link virtualobjects 114 with interactive events triggered by virtual users 110.Metadata assigned to object data 104 for the virtual objects 114 may beused to identify the object data 104 in response to an interactiveevent. Illustratively, an interactive event may include entering avirtual space 112 by a virtual user 110, or some other virtual actionperformed by a virtual user 110 (e.g., picking up an object, interactingwith an object, etc.).

In another example, metadata for object data 104 may also be used toassociate virtual objects 114 with attributes of virtual users 110. Morespecifically, the attributes of a virtual user 110 may be linked to theattributes of a physical user represented by the virtual user 110, andthe attributes of the physical user may be used to identify a virtualobject 114. Illustratively, attributes of a physical user that may beused to identify a virtual object 114 include, but are not limited to:personally identifying information, demographic information, a productpurchase history, and/or a user's browsing history (e.g., an Internetbrowsing history).

In yet another example, metadata for object data 104 may includeinformation that associates a virtual object 114 with the context of asimulation environment 108 (e.g., a time, place, and/or circumstancesrepresented by the simulation environment 108). For example, themetadata may describe attributes of a virtual object 114.Illustratively, attributes of a virtual object 114 may include, but arenot limited to: a virtual object type (e.g., man, woman, child, animal,inanimate object, etc.), a communication type (e.g., one-sidedconversation, full conversation, or narration), a personality type(e.g., loud, quiet, expressive, etc.), situational type (e.g., casual,formal, professional, etc.).

As an illustration, metadata for object data 104 may describe a virtualobject 114 as a person on a park bench talking on a cell phone (i.e., aone-sided conversation). The metadata may link the virtual object 114(i.e., object data 104 for the virtual object 114) to an interactiveevent such as a virtual user 110 entering a virtual public park. Morespecifically, attributes of the interactive event (i.e., a descriptionof a virtual space 112) link the interactive event to the metadata forthe object data 104.

The virtual objects 114 provided by the customers of the computingservice provider 102 may be dynamically incorporated into simulationenvironments 108 rendered using simulation clients 106. A simulationclient 106 may comprise a VR headset, gaming device, mobile device,desktop computer, smart television, or another compatible computingdevice. In one example, a simulation client 106 may be configured todetect an interactive event in a simulation environment 108 that islinked to a virtual object 114 and send an indication of the interactiveevent, via an API (Application Programming Interface) request to avirtual object service 116 in the computing service environment 102. TheAPI request may include context information for the interactive eventthat may be used by a virtual object service 116 to identify object data104 for a virtual object 114. More specifically, the context informationmay be used to identify object data 104 having metadata that is linkedto the context information, as illustrated in FIG. 1b . Illustratively,as described in greater detail below, context information may include:information for an interactive event, information for a virtual user 110associated with the interactive event, and/or information for asimulation environment 108 in which the interactive event occurred. Thecontext information may be used to identify metadata stored with objectdata 104 that corresponds to the context information. As anillustration, an interactive event may be detected when a virtual user110 enters a virtual space 112 in a simulation environment 108 renderedon a simulation client 106. Illustratively, the virtual space 112 mayinclude a virtual location or bounded area within the simulationenvironment 108 and the interactive event defined for the virtual space112 may be triggered when a virtual user 110 enters the virtual space112. The simulation client 106 may detect the interactive event (whichidentifies the interactive event and provides context information forthe interactive event), and the simulation client 106 may send an APIrequest to the virtual object service 116. As a non-limiting example, aninteractive event may be defined for a virtual space 112 comprising avirtual shopping mall. When a virtual user 110 enters the virtualshopping mall, a simulation client 106 may obtain context informationfor the interactive event, such as an identity of the virtual user 110and attributes associated with the virtual shopping mall, and thesimulation client 106 may send an API request to the virtual objectservice 116 that includes the context information.

In response to receiving the API request, the virtual object service 116may be configured to obtain object data 104 for a virtual object 114using context information provided in the API request. As describedabove, the context information may include interactive eventinformation, virtual user information, and/or simulation environmentinformation. The context information may be used to identify metadatastored with a virtual object 114 that corresponds with the contextinformation.

As one example of using context information to identify a virtual object114, interactive event information (e.g., entering a virtual space 112)may be used to identify metadata for a virtual object 114 that links thevirtual object 114 with the interactive event. As a specific example, inresponse to receiving an API request indicating that a virtual user 110has entered a virtual retail store, object data 104 for a virtual object114 having metadata that associates the virtual object 114 with thevirtual retail store may be identified.

As another example, user attributes for a physical user represented by avirtual user 110 may be used to identify metadata stored with a virtualobject 114 that associates the virtual object 114 with the userattributes. Illustratively, the user attributes may include: personallyidentifying information, demographic information, product purchasehistory, and/or browsing history. As a further example, demographicinformation for a physical user may be used to identify object data 104for a virtual object 114 having metadata that associates the virtualobject 114 with a particular demographic that includes the physicaluser.

As another example of using context information to identify a virtualobject 114, simulation environment information, such as environment type(e.g., real-world, fantasy world, etc.), virtual geographic location,gameplay information, virtual time and weather information, and the likemay be used to identify metadata for a virtual object 114 thatassociates the virtual object 114 with the simulation environmentinformation. As a specific example, time-period information (e.g., amedieval time-period) may be used to identify object data 104 for avirtual object 114 having metadata that associates the virtual object114 with the time-period (e.g., a virtual object 114 wearing medievalclothing).

In one example, conversation text for a virtual object 114 may beconstructed using conversation nodes included in object data 104 for thevirtual object 114. The conversation text may be constructed usingconversation nodes that are associated with context information providedby a simulation client 106 in response to detecting an interactive event112. A customer of the computing service provider may create aconversation tree for a virtual object 114 and the customer may provideconversation nodes that are linked to context information (e.g.,information for an interactive event, information for a virtual user 110associated with the interactive event, and/or information for asimulation environment 108 in which the interactive event occurred) Theconversation nodes may be used to populate the conversation tree. Inresponse to detecting an interactive event 112, a simulation client 106may provide context information to the virtual object service 116 andthe context information may be used to construct conversation text usingconversation nodes included in object data 104, and the conversationtext may be converted to an audio stream and provided to the simulationclient 106 to animate a virtual object 114 in a simulation environment108. As an illustration, a conversation tree may be directed toadvertising a product via a conversation between two virtual objects114. Context information for an interactive event may include userattributes (e.g., gender, age, etc.) which may be used to selectconversation nodes associated with the user attributes (e.g., selectconversation nodes for a product directed to a specific gender, age,etc.).

In one example, context information provided by a simulation client 106may include an image or video of a physical user represented by avirtual user 110. The image or video may be analyzed using an imagerecognition technique configured to identify user attributes for usersand object attributes detected in the image or video. The userattributes and object attributes may be used to select conversationnodes included in object data 104 and construct conversation text for avirtual object 114. Object data 104 obtained by the virtual objectservice 116 may include three dimensional graphics, speech data (e.g.,speech text or speech audio), and/or animation instructions, which maybe used by a simulation client 106 to animate a virtual object 114 in asimulation environment 108. Speech data included in object data 104 maybe used to provide a message as described earlier. In one example,object data 104 may include speech text that may be converted to anaudio stream. A highly scalable object data store in the computingservice environment 102 may be used to provide the audio stream,graphics, and animation instructions to a simulation client 106. Morespecifically, a data stream that includes the audio stream, graphics,and animation instructions may be streamed from the computing serviceenvironment 102 to the simulation client 106. Alternatively, a file datastore or key value data store may be used to obtain the object data 104.The simulation client 106 may use the audio stream, graphics, andanimation instructions included in the data stream to add the virtualobject 114 to the simulation environment 108 and render (e.g., animate)the virtual object 114 to simulate communication of the message includedin the audio stream, graphics, or animation instructions.

FIG. 2 illustrates components of an example system 200 on which thepresent technology may be executed. The system 200 may includevirtualized servers 204, 214, 220 or computing instances located in acomputing service environment 202. The computing service environment 202may include computing resources for executing computing instances (e.g.,virtual machines), which may be an instance of a software implementationof a machine (i.e. a computer) for emulating a physical machine, asdescribed in greater detail later in association with FIG. 3.

The system 200 may include simulation clients 226 configured to host aportion of a simulation environment. A simulation client 226 may includea VR, AR, or mixed reality device, such as a VR headset, gaming device,desktop computer, augmented reality headset, smart television or othercomputing device capable of generating and presenting a simulationenvironment. The simulation clients 226 may be in network communicationwith the computing service environment 202. A physical user, who may berepresented by a virtual user (e.g., an avatar), may use a simulationclient 226 to interact with a simulation environment and other virtualusers, simulated characters, or objects within the simulationenvironment. A simulation environment may include a VR (VirtualReality), AR (Augmented Reality), or mixed reality environment. A VRenvironment may comprise a computer generated environment that includesimages, sounds, and other sensations that simulates a user's physicalpresence in a virtual environment. An AR environment may comprise adirect or indirect view of a physical, real-world environment whoseelements are augmented by computer-generated sensory input, such assound, video, and graphics. A mixed reality environment may comprisemerging of real world and virtual worlds to produce new environments andvisualizations where physical and digital objects co-exist and interactin real-time.

A simulation client 226 may be configured to detect an interactive eventthat occurs in a simulation environment and send an indication of theinteractive event, via an API request sent to an API gateway 212, to thevirtual object service 210. In one example, an API request may identifyan interactive event and the API request may include context informationfor the interactive event provided by a simulation client 226 that maybe used to identify object data 218 for a virtual object.Illustratively, the context information may include interactive eventinformation (e.g., entering a virtual space or interacting with anobject), virtual user information (e.g., personally identifyinginformation, demographic information, product purchase history, orbrowsing history), and/or simulation environment information (e.g., anenvironment type, virtual geographic location, gameplay information, orvirtual time and weather information). In response to receiving an APIrequest from a simulation client 226, the virtual object service 210 mayinitiate streaming of object data 218 for a virtual object to thesimulation client 226, as explained below, and the simulation client 226may use the object data 218 to incorporate the virtual object into asimulation environment executed on the simulation client 226. The objectdata 218 may include graphics, speech text, audio or even video for avirtual object. Speech text included in object data 218 may be used toconvey a message to a physical user of a simulation client 226.

In one example, object data 218 may be formatted using JSON objects andthe JSON objects may be streamed to a simulation client 226 using JSONstreaming. A simulation client 226 may include a virtual object SDK(Software Development Kit) that provides a software framework forprocessing an object data stream received from the computing serviceenvironment 202.

The servers 204, 214, 220 may host managed services used as part ofproviding object data 218 for virtual objects to simulation clients 226.In the example illustrated in FIG. 2, the servers 204 may host a virtualobject service 210. The virtual object service 210 may be configured toidentify object data 218 for a virtual object in response to anindication of an interactive event detected by a simulation client 226.For example, in response to an API request from a simulation client 226,context information included in the API request may be provided to thevirtual object service 210. The virtual object service 210 may beconfigured to use the context information to query a data storageservice 216 for object data 218 associated with the context information.The data storage service 216 may use the context information to identifyobject data 218 for a virtual object that is associated with the contextinformation. More specifically, the object data 218 may be associatedwith metadata that links the object data 218 to an interactive event.The metadata may be analyzed to identify the object data 218 associatedwith the interactive event.

In one example, user attributes for a virtual user, who is associatedwith an interactive event, may be obtained from a virtual user profile230 and the user attributes may be used to identify object data 218 fora virtual object. A virtual user profile 230 may be associated with auser of a computing service provider who provides computing services,retail services, and other services to users. The user's virtual userprofile 230 may be linked to a user account for the computing serviceprovider. Illustratively, user attributes included in a virtual userprofile 230 may include: personally identifying information, demographicinformation, a product purchase history, a browsing history, as well asother attributes. The user attributes may be used to identify metadatafor object data 218 that is associated with the user attributes. Also,in one example, a user may indicate user preferences in the virtual userprofile 230 that indicate categories of virtual objects that are allowedto be rendered in a simulation environment. More specifically, the userpreferences may specify types of messages the user is willing to bepresented with by virtual objects incorporated into a simulationenvironment.

In one example, the data storage service 216 may be configured to streamobject data 218 for a virtual object to a simulation client 226 thatrequested the object data 218. The object data 218 may include speechtext or audio, virtual object graphics, animation instructions, orvideo. In one example, prior to streaming object data 218 to asimulation client 226, speech text may be submitted to a text-to-speechservice 208. The text-to-speech service 208 may be configured to convertthe speech text to audio (e.g., an audio stream), which may be providedto a simulation client 226. The text-to-speech service 208 may also beconfigured to generate animation instructions that are used tosynchronize animation of a virtual object with speech text or an audiostream. In one example, animation instructions may include speech markdata. The speech mark data may include at least one of: a sentenceelement that indicates a sentence, a word element that indicates a word,a viseme that indicates a face and mouth movement that corresponds to aphoneme, and/or SSML (Speech Synthesis Markup Language). A simulationclient 226 may use the speech mark data for facial animation of avirtual object.

In another example, serverless computing may be used to identify objectdata 218 for a virtual object in response to an indication of aninteractive event detected by a simulation client 226 and stream theobject data 218 to the simulation client 226. Serverless computing maybe a computing execution model in which a computing service providerdynamically manages the allocation of computing resources used toexecute compute service program code 232, and charges a customer basedon the amount of computing resources consumed by the compute serviceprogram code 232.

Compute service program code 232 may be a segment of program code thatmay be like a function, and the compute service program code 232 mayreceive parameters, perform processing and provide return values. In oneaspect, the compute service program code 232 may execute on a managedcompute service code platform for back-end web services that runs adefined program code on a computing instance. That is, the computeservice program code 232 may execute in the computing serviceenvironment 202 that runs the compute service program code 232 inresponse to requests, and automatically manages the compute resourcesused by the compute service program code 232. Once a compute serviceprogram code 232 has been executed and results have been returned to arequesting entity, the compute service program code 232 and results maybe removed from the memory of the computing instance in which thecompute service program code 232 was executing. Compute service programcode 232 provides for building smaller, on-demand applications that maybe responsive to events and new information. For example, back-endservices may be automatically provisioned in response to receiving arequest to execute compute service program code 232. In one aspect,compute service program code 232 may be triggered in response to anevent, may execute or perform a function in response to the event, andreturn a response or value. A data source or target resource utilized bythe compute service program code 232 may be located outside of thecomputing service environment 202. For example, a data source for objectdata 218 for a virtual object may be located in a private data center orat another remote location accessible via the Internet.

In one example, compute service program code 232 may be configured toperform actions that include identifying object data 218 for a virtualobject in response to an API request, obtaining an audio stream andanimation instructions from the text-to-speech service 208, andrequesting and streaming object data 218 to a simulation client 226. Forexample, an API request from a simulation client 226 may trigger computeservice program code 232 that obtains object data 218 for a virtualobject specified in the API request, obtains an audio stream andanimation instructions for speech text included in the object data 218,and initiates streaming of the audio stream, animation instructions, andvirtual object graphics to the simulation client 226.

As illustrated, the server 220 may host a customer API 224 used bycustomers of the computing service provider to manage object data 218for virtual objects stored in the computing service environment 202using the data storage service 216. In some examples, customers of thecomputing service provider may be provided with a virtual object SDK(Software Development Kit) 222. Customer may create, upload, and/ormodify object data 218 for the customer's virtual objects using thevirtual object SDK 222.

Object data 218 for virtual objects may be stored on data stores managedby the data storage service 216. In one example, the data stores mayinclude virtual storage. Virtual storage is the pooling of physicalstorage from multiple network storage devices to represent a singlestorage device that is managed by the data storage service 216. The term“data store” may refer to any device or combination of devices capableof storing, accessing, organizing and/or retrieving data, which mayinclude any combination and number of data servers, relationaldatabases, object oriented databases, cluster storage systems, datastorage devices, data warehouses, flat files and data storageconfiguration in any centralized, distributed, or clustered environment.The storage system components of the data store may include storagesystems such as a SAN (Storage Area Network), cloud storage network,volatile or non-volatile RAM, optical media, or hard-drive type media.The data store may be representative of a plurality of data stores ascan be appreciated.

A customer may use a client 228 to access the customer API 224. A client228 may include a client device capable of sending and receiving dataover a network. A client device may comprise, for example aprocessor-based system such as a computing device. A client device maybe a device such as, but not limited to, a desktop computer, laptop ornotebook computer, tablet computer, mainframe computer system, handheldcomputer, workstation, network computer, or other devices with likecapability.

The various processes and/or other functionality contained within thesystem 200 may be executed on one or more processors that are incommunication with one or more memory modules. The system 200 mayinclude a number of computing devices that are arranged, for example, inone or more server banks or computer banks or other arrangements. Thecomputing devices may support a computing environment using hypervisors,virtual machine monitors (VMMs) and other virtualization software.

API calls, procedure calls, or other network commands that may be madein relation to the services included in the computing serviceenvironment 202 may be implemented according to different technologies,including, but not limited to, Representational state transfer (REST)technology or Simple Object Access Protocol (SOAP) technology. REST isan architectural style for distributed hypermedia systems. A RESTful API(which may also be referred to as a RESTful web service) is a webservice API implemented using HTTP and REST technology. SOAP is aprotocol for exchanging information in the context of Web-basedservices.

A network may include any useful computing network, including anintranet, the Internet, a local area network, a wide area network, awireless data network, or any other such network or combination thereof.Components utilized for such a system may depend at least in part uponthe type of network and/or environment selected. Communication over thenetwork may be enabled by wired or wireless connections and combinationsthereof.

FIG. 2 illustrates that certain services may be discussed in connectionwith this technology. In one example configuration, a service maycomprise one or more processes executing on a server or other computerhardware. Such services may be centrally hosted functionality or aservice application that may receive requests and provide output toother services or consumer devices. For example, services may beconsidered on-demand computing that are hosted in a server, virtualizedservice environment, grid or cluster computing system. An API may beprovided for each service to enable a second service to send requests toand receive output from a first service. Such APIs may also allow thirdparties to interface with the services and make requests and receiveoutput from the services. While FIG. 2 illustrates an example of asystem that may implement the techniques above, many other similar ordifferent environments are possible. The example environments discussedand illustrated above are merely representative and not limiting.

FIG. 3 is a block diagram illustrating an example computing service 300that may be used to execute and manage a number of computing instances304 a-d. In particular, the computing service 300 depicted illustratesone environment in which the technology described herein may be used.The computing service 300 may be one type of environment that includesvarious virtualized service resources that may be used, for instance, tohost computing instances 304 a-d.

The computing service 300 may be capable of delivery of computing,storage and networking capacity as a software service to a community ofend recipients. In one example, the computing service 300 may beestablished for an organization by or on behalf of the organization.That is, the computing service 300 may offer a “private cloudenvironment.” In another example, the computing service 300 may supporta multi-tenant environment, wherein a plurality of customers may operateindependently (i.e., a public cloud environment). Generally speaking,the computing service 300 may provide the following models:Infrastructure as a Service (“IaaS”), Platform as a Service (“PaaS”),and/or Software as a Service (“SaaS”). Other models may be provided. Forthe IaaS model, the computing service 300 may offer computers asphysical or virtual machines and other resources. The virtual machinesmay be run as guests by a hypervisor, as described further below. ThePaaS model delivers a computing platform that may include an operatingsystem, programming language execution environment, database, and webserver.

Application developers may develop and run their software solutions onthe computing service platform without incurring the cost of buying andmanaging the underlying hardware and software. The SaaS model allowsinstallation and operation of application software in the computingservice 300. End customers may access the computing service 300 usingnetworked client devices, such as desktop computers, laptops, tablets,smartphones, etc. running web browsers or other lightweight clientapplications, for example. Those familiar with the art will recognizethat the computing service 300 may be described as a “cloud”environment.

The particularly illustrated computing service 300 may include aplurality of server computers 302 a-d. While four server computers areshown, any number may be used, and large data centers may includethousands of server computers. The computing service 300 may providecomputing resources for executing computing instances 304 a-d. Computinginstances 304 a-d may, for example, be virtual machines. A virtualmachine may be an instance of a software implementation of a machine(i.e. a computer) that executes applications like a physical machine. Inthe example of a virtual machine, each of the server computers 302 a-dmay be configured to execute an instance manager 308 a-d capable ofexecuting the instances. The instance manager 308 a-d may be ahypervisor, virtual machine monitor (VMM), or another type of programconfigured to enable the execution of multiple computing instances 304a-d on a single server. Additionally, each of the computing instances304 a-d may be configured to execute one or more applications.

One or more server computers 314 and 316 may be reserved to executesoftware components for managing the operation of the computing service300 and the computing instances 304 a-d. For example, a server computer314 may execute a virtual object service 326, which may be configured toperform the functions described earlier. A server computer 316 mayexecute a management component 318. A customer may access the managementcomponent 318 to configure various aspects of the operation of thecomputing instances 304 a-d purchased by a customer. For example, thecustomer may setup computing instances 304 a-d and make changes to theconfiguration of the computing instances 304 a-d.

A deployment component 322 may be used to assist customers in thedeployment of computing instances 304 a-d. The deployment component 322may have access to account information associated with the computinginstances 304 a-d, such as the name of an owner of the account, creditcard information, country of the owner, etc. The deployment component322 may receive a configuration from a customer that includes datadescribing how computing instances 304 a-d may be configured. Forexample, the configuration may include an operating system, provide oneor more applications to be installed in computing instances 304 a-d,provide scripts and/or other types of code to be executed forconfiguring computing instances 304 a-d, provide cache logic specifyinghow an application cache should be prepared, and other types ofinformation. The deployment component 322 may utilize thecustomer-provided configuration and cache logic to configure, prime, andlaunch computing instances 304 a-d. The configuration, cache logic, andother information may be specified by a customer accessing themanagement component 318 or by providing this information directly tothe deployment component 322.

Customer account information 324 may include any desired informationassociated with a customer of the multi-tenant environment. For example,the customer account information may include a unique identifier for acustomer, a customer address, billing information, licensinginformation, customization parameters for launching instances,scheduling information, etc. As described above, the customer accountinformation 324 may also include security information used in encryptionof asynchronous responses to API requests. By “asynchronous” it is meantthat the API response may be made at any time after the initial requestand with a different network connection.

A network 310 may be utilized to interconnect the computing service 300and the server computers 302 a-d, 316. The network 310 may be a localarea network (LAN) and may be connected to a Wide Area Network (WAN) 312or the Internet, so that end customers may access the computing service300. The network topology illustrated in FIG. 3 has been simplified,many more networks and networking devices may be utilized tointerconnect the various computing systems disclosed herein.

In FIG. 4, a diagram illustrates an example of a virtual object 412 thatis configured to simulate a one-sided conversation. That is, the virtualobject 412 may be configured to simulate a one-sided conversation 414,such that the conversation 414 may be “overheard” by a virtual user 408that triggered the interactive event 410. The conversation 414 may beindirectly intended for a physical user represented in the simulationenvironment 406 by a virtual user 408. As an illustration, the virtualobject 412 (i.e., virtual character) may be animated to speak into acell phone, such that the virtual object 412 appears to be talking tosomeone on the other end of the phone call. The conversation 414simulated by the virtual object 412 may comprise audio output or textualoutput, and the message of the conversation may be indirectly intendedfor a physical user of a simulation client 404. Thus, the message may berelevant to the physical user, but is not directed to the physical user.In the case that the conversation 414 has audio output, the volume anddirection of the audio output may coincide with attributes of abackground conversation that is capable of being overheard by a virtualuser 408 in a simulation environment 406.

The virtual object 412 may be obtained from a computing service provider402 and incorporated into a simulation environment 406 in response to aninteractive event 410. As a non-limiting example, a virtual user 408 maywalk down a virtual street in the simulation environment 406 and pass awaypoint. Passing the waypoint may be an interactive event 410 thattriggers the simulation client 404 to obtain object data for the virtualobject 412 from the computing service provider 402. The object data mayinclude an audio stream, graphics, and animation instructions used bythe simulation client 404 to animate the virtual object as a backgroundobject in the simulation environment 406. For example, the virtualobject 412 may be animated to talk on a cell phone so that as a virtualuser 408 passes by the virtual object 412, the virtual user 408 may“overhear” a one-sided conversation being spoken by the virtual object412 that conveys a message to the virtual user 408.

FIG. 5 is a diagram illustrating an example of a virtual object 512configured to simulate a conversation 514 between a plurality ofentities. For example, the virtual object 512 may simulate aconversation 514 that takes place between a number of virtual persons orcharacters, such that the conversation 514 may be “overheard” by avirtual user 508 who triggered an interactive event 510. As describedabove, the conversation 514 may be indirectly intended for a physicaluser represented in a simulation environment 506 by a virtual user 508.For example, the virtual object 512 may represent two or moreindividuals who are engaged in a conversation. However, the message ofthe conversation may be targeted to the physical user of the simulationclient 504 and a customer of the computing service provider 502 maydesire the physical user to feel like the conversation is beingoverheard and the conversation is part of the background of thesimulation environment 506.

As a non-limiting example, a virtual user 508 may enter a virtualshopping mall in a simulation environment 506. Entering the shoppingmall may be an interactive event 510 that triggers a simulation client504 to retrieve streaming object data for the virtual object 512 from acomputing service provider 502. The object data may include an audiostream, graphics, and animation instructions used by the simulationclient 504 to animate two individuals talking between themselves about aproduct that is available for purchase from the virtual shopping mall.The two individuals may be in virtual proximity to the virtual user 508that allows the virtual user 508 to “overhear” the conversation. Morespecifically, audio output of the conversation may be provided to aphysical user of the simulation client 504, allowing the physical userto hear the message conveyed in the conversation.

FIG. 6 is a diagram illustrating an example of a virtual object 612configured to provide a narration perceived to originate from a featurein a simulation environment 606. For example, the virtual object 612 maycomprise a feature capable of communicating a message (e.g., a vehicle(stationary or moving), large screen monitor, a virtual radio speaker,billboard, magazine, etc.). The narration emanating from the virtualobject 612 may be “overheard” by a virtual user 608 that triggered aninteractive event 610, and a message conveyed via the narration may betargeted to the physical user of the simulation client 604.

As a non-limiting example, a virtual user 608 may approach a virtualvehicle in a simulation environment 606. Approaching the vehicle may bean interactive event 610 that causes a simulation client 604 to obtainobject data for the virtual object 612 from a computing service provider602. The object data may include an audio stream, and may includegraphics and animation instructions used by the simulation client 404 toanimate a narration emanating from the virtual object 612. For example,the virtual vehicle may be animated to appear to be playing a narrationon a car radio that can be “overheard” by the virtual user 408, and thenarration may convey a message that is directed to the physical user ofthe simulation client 604.

FIG. 7 is a flow diagram illustrating an example method 700 forincorporating a virtual object into a simulation environment in responseto detecting an interactive event. As in block 710, interactive eventsfor a simulation environment may be monitored on a simulation client.For example, the simulation client may be configured to detect theoccurrence of an interactive event associated with a virtual user, suchas entering a virtual space, passing a waypoint, or interacting with avirtual object in the simulation environment.

As in block 720, an interactive event occurring within the simulationenvironment executed on the simulation client may be detected. Theinteractive event may trigger a request for object data for a virtualobject stored in a computing service provider environment. For example,in response to detecting the interactive event, the simulation clientmay collect context information associated with the interactive event(e.g., interactive event information, virtual user information, and/orsimulation environment information) and generate an API request thatincludes the context information.

As in block 730, the request for the object data may be sent to avirtual object service hosted by a computing service provider. Forexample, the simulation client may send an API request to a virtualobject service hosted in the computing service environment and contextinformation included in the API request may be provided to the virtualobject service. The virtual object service may use the contextinformation to identify object data for a virtual object associated withthe interactive event. The object data for the virtual object may thenbe streamed to the simulation client.

As in block 740, an object data stream for the virtual object may bereceived from the computing service provider environment. The objectdata stream may include graphics, animation instructions, and an audiostream for the virtual object. In one example, graphics for a virtualobject, such as a static feature in a simulation environment, may bestored on the simulation client; therefore an object data stream mayinclude an audio stream, but may not include graphics and animationinstructions for the virtual object.

As the object data stream for the virtual object is received at thesimulation client, the simulation client, as in block 750, may initiaterendering of the virtual object in the simulation environment using theobject data stream. The simulation client may synchronize animation ofthe virtual object with the audio stream included in the object datastream. For example, the object data stream may include speech mark dataused for facial animation of the virtual object to speak words includedin the audio stream in synchronization of audio output of the audiostream.

FIG. 8 is a flow diagram that illustrates an example method 800 forstreaming object data for a virtual object to a simulation client inresponse to receiving an indication of an interactive event in asimulation environment executed by the simulation client. As in block810, an indication of an interactive event associated with a simulationenvironment may be received, and the indication of the interactive eventmay be sent over a network by a simulation client configured to executethe simulation environment. The interactive event may be entering avirtual area, passing a waypoint, or interacting with a virtual objectin the simulation environment, etc.

In response to receiving the indication of the interactive event, as inblock 820, object data for a virtual object that is linked to theinteractive event may be identified, and the object data may includespeech data (e.g., speech text or speech audio) linked to the virtualobject. Also, in one example, the object data may include virtual objectgraphics. In another example, a virtual object may be provided by acustomer of a computing service provider and the virtual object may bedynamically incorporated into a simulation environment to deliver amessage to a physical user of a simulation client. Object data for avirtual object provided by a customer may include speech data configuredto advertise a product or a service to a physical user of a simulationclient via the virtual object. Identifying the virtual object inresponse to receiving the indication of the interactive event mayinclude identifying user attributes for a virtual user associated withthe interactive event. The user attributes may be used in part toidentify object data for the virtual object.

As in block 830, an audio stream and animation instructions for thevirtual object may be obtained using the speech data included in theobject data. For example, speech text included in the object data may besubmitted to a text-to-speech service configured to convert the speechtext to an audio stream and generate the animation instructions usingthe speech text. The animation instructions may be used by thesimulation client to synchronize animation of the virtual object withthe audio stream. As described earlier, in one example, the animationinstructions may include speech mark data that may be used by thesimulation client to animate the virtual object to speak words includedin the audio stream.

Having obtained the audio stream and the animation instructions, as inblock 840, streaming may be initiated for audio stream and the animationinstructions for the virtual object to the simulation client. Thesimulation client may receive the audio stream and animationinstructions and incorporate the virtual object in the simulationenvironment using the audio stream and animation instructions, such thatanimation of the virtual object may be synchronized with the audiostream using the animation instructions. In one example, graphics forthe virtual object may be streamed along with the audio stream andanimation instructions to the simulation client and the simulationclient may use the graphics and the animation instructions to animatethe virtual object in synchronization with the audio stream. In anotherexample, graphics for the virtual object may be on the simulation client(e.g., stored on the simulation client), and the graphics and theanimation instructions may be used to animate the virtual object insynchronization with the audio stream.

FIG. 9 illustrates a computing device 910 on which modules of thistechnology may execute. A computing device 910 is illustrated on which ahigh level example of the technology may be executed. The computingdevice 910 may include one or more processors 912 that are incommunication with memory devices 920. The computing device 910 mayinclude a local communication interface 918 for the components in thecomputing device. For example, the local communication interface 918 maybe a local data bus and/or any related address or control busses as maybe desired.

The memory device 920 may contain modules 924 that are executable by theprocessor(s) 912 and data for the modules 924. For example, the memorydevice 920 may include a virtual object module, a text-to-speech module,and other modules. The modules 924 may execute the services andfunctions described earlier. A data store 922 may also be located in thememory device 920 for storing data related to the modules 924 and otherapplications along with an operating system that is executable by theprocessor(s) 912.

Other applications may also be stored in the memory device 920 and maybe executable by the processor(s) 912. Components or modules discussedin this description that may be implemented in the form of softwareusing high programming level languages that are compiled, interpreted orexecuted using a hybrid of the methods.

The computing device may also have access to I/O (input/output) devices914 that are usable by the computing devices. Networking devices 916 andsimilar communication devices may be included in the computing device.The networking devices 916 may be wired or wireless networking devicesthat connect to the internet, a LAN, WAN, or other computing network.

The components or modules that are shown as being stored in the memorydevice 920 may be executed by the processor(s) 912. The term“executable” may mean a program file that is in a form that may beexecuted by a processor 912. For example, a program in a higher levellanguage may be compiled into machine code in a format that may beloaded into a random access portion of the memory device 920 andexecuted by the processor 912, or source code may be loaded by anotherexecutable program and interpreted to generate instructions in a randomaccess portion of the memory to be executed by a processor. Theexecutable program may be stored in any portion or component of thememory device 920. For example, the memory device 920 may be randomaccess memory (RAM), read only memory (ROM), flash memory, a solid statedrive, memory card, a hard drive, optical disk, floppy disk, magnetictape, or any other memory components.

The processor 912 may represent multiple processors and the memorydevice 920 may represent multiple memory units that operate in parallelto the processing circuits. This may provide parallel processingchannels for the processes and data in the system. The local interface918 may be used as a network to facilitate communication between any ofthe multiple processors and multiple memories. The local interface 918may use additional systems designed for coordinating communication suchas load balancing, bulk data transfer and similar systems.

While the flowcharts presented for this technology may imply a specificorder of execution, the order of execution may differ from what isillustrated. For example, the order of two more blocks may be rearrangedrelative to the order shown. Further, two or more blocks shown insuccession may be executed in parallel or with partial parallelization.In some configurations, one or more blocks shown in the flow chart maybe omitted or skipped. Any number of counters, state variables, warningsemaphores, or messages might be added to the logical flow for purposesof enhanced utility, accounting, performance, measurement,troubleshooting or for similar reasons.

Some of the functional units described in this specification have beenlabeled as modules, in order to more particularly emphasize theirimplementation independence. For example, a module may be implemented asa hardware circuit comprising custom VLSI circuits or gate arrays,off-the-shelf semiconductors such as logic chips, transistors, or otherdiscrete components. A module may also be implemented in programmablehardware devices such as field programmable gate arrays, programmablearray logic, programmable logic devices or the like.

Modules may also be implemented in software for execution by varioustypes of processors. An identified module of executable code may, forinstance, comprise one or more blocks of computer instructions, whichmay be organized as an object, procedure, or function. Nevertheless, theexecutables of an identified module need not be physically locatedtogether, but may comprise disparate instructions stored in differentlocations which comprise the module and achieve the stated purpose forthe module when joined logically together.

Indeed, a module of executable code may be a single instruction, or manyinstructions and may even be distributed over several different codesegments, among different programs and across several memory devices.Similarly, operational data may be identified and illustrated hereinwithin modules and may be embodied in any suitable form and organizedwithin any suitable type of data structure. The operational data may becollected as a single data set, or may be distributed over differentlocations including over different storage devices. The modules may bepassive or active, including agents operable to perform desiredfunctions.

The technology described here may also be stored on a computer readablestorage medium that includes volatile and non-volatile, removable andnon-removable media implemented with any technology for the storage ofinformation such as computer readable instructions, data structures,program modules, or other data. Computer readable storage media include,but is not limited to, non-transitory media such as RAM, ROM, EEPROM,flash memory or other memory technology, CD-ROM, digital versatile disks(DVD) or other optical storage, magnetic cassettes, magnetic tapes,magnetic disk storage or other magnetic storage devices, or any othercomputer storage medium which may be used to store the desiredinformation and described technology.

The devices described herein may also contain communication connectionsor networking apparatus and networking connections that allow thedevices to communicate with other devices. Communication connections arean example of communication media. Communication media typicallyembodies computer readable instructions, data structures, programmodules and other data in a modulated data signal such as a carrier waveor other transport mechanism and includes any information deliverymedia. A “modulated data signal” means a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example and not limitation,communication media includes wired media such as a wired network ordirect-wired connection and wireless media such as acoustic, radiofrequency, infrared and other wireless media. The term computer readablemedia as used herein includes communication media.

Reference was made to the examples illustrated in the drawings andspecific language was used herein to describe the same. It willnevertheless be understood that no limitation of the scope of thetechnology is thereby intended. Alterations and further modifications ofthe features illustrated herein and additional applications of theexamples as illustrated herein are to be considered within the scope ofthe description.

Furthermore, the described features, structures, or characteristics maybe combined in any suitable manner in one or more examples. In thepreceding description, numerous specific details were provided, such asexamples of various configurations to provide a thorough understandingof examples of the described technology. It will be recognized, however,that the technology may be practiced without one or more of the specificdetails, or with other methods, components, devices, etc. In otherinstances, well-known structures or operations are not shown ordescribed in detail to avoid obscuring aspects of the technology.

Although the subject matter has been described in language specific tostructural features and/or operations, it is to be understood that thesubject matter defined in the appended claims is not necessarily limitedto the specific features and operations described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims. Numerous modifications and alternativearrangements may be devised without departing from the spirit and scopeof the described technology.

What is claimed is:
 1. A system comprising: at least one processor; amemory device including instructions that, when executed by the at leastone processor, cause the system to: receive an indication of aninteractive event occurring in a simulation environment, wherein theindication of the interactive event is received via an API (ApplicationProgramming Interface) request from a simulation client configured toexecute the simulation environment; identify object data for a virtualobject stored in a virtual object data store provided by a computingservice provider, wherein the object data includes metadata thatassociates the virtual object with the interactive event and the objectdata includes graphics and speech text for a virtual object included inthe simulation environment as a background object to convey a messagecontained in the speech text as a background message in the simulationenvironment that indirectly communicates the message to a user of thesimulation environment; obtain an audio stream and animationinstructions from a text-to-speech service configured to convert thespeech text for the virtual object to the audio stream and generate theanimation instructions using the speech text; and initiate streaming ofthe graphics, the audio stream, and the animation instructions to thesimulation client from the virtual object data store via a network, toenable the simulation client to include the virtual object in thesimulation environment and virtual object animation to be synchronizedwith the audio stream.
 2. The system in claim 1, wherein the animationinstructions include speech mark data generated by the text-to-speechservice and the speech mark data is used by a simulation client toanimate the virtual object to simulate a one-sided conversation, aconversation between a plurality of virtual objects, or a narration thatemanates from the virtual object provided as a feature in the simulationenvironment.
 3. The system in claim 1, wherein the memory deviceincludes instructions that, when executed by the processor, cause thesystem to further construct conversation text for the virtual objectusing the speech text included in the object data as selected based inpart on context information for the interactive event, wherein thespeech text includes conversation nodes that are linked to the contextinformation for the interactive event.
 4. The system in claim 1, whereinthe memory device includes instructions that, when executed by theprocessor, cause the system to further: receive the object data for thevirtual object via a customer API, wherein the virtual objects arecreated by customers of the computing service provider for inclusion asbackground objects in simulation environments; analyze the object datafor attributes that correlate to context information used in part toselect the virtual object for inclusion in the simulation environment;generate the metadata for the attributes that correlate to theinteractive events; and enable storing of the object data and themetadata in the virtual object data store.
 5. The system in claim 4,wherein the memory device includes instructions that, when executed bythe processor, cause the system to further: receive the metadata for theobject data via the customer API, wherein the metadata includes contextinformation used in part to select the virtual object for inclusion inthe simulation environments.
 6. A computer implemented method,comprising: receiving an indication of an interactive event associatedwith a simulation environment, wherein the indication of the interactiveevent is sent over a network by a simulation client configured toexecute the simulation environment; identifying object data for avirtual object linked to the interactive event, wherein the virtualobject is a background object in the simulation environment and theobject data includes speech data linked to the virtual object used toconvey a message contained in the speech data as a background message inthe simulation environment that indirectly communicates the message to auser of the simulation environment; obtaining an audio stream andanimation instructions for the virtual object from a text-to-speechservice configured to convert the speech data to the audio stream andgenerate the animation instructions using the speech data; andinitiating streaming of the audio stream and the animation instructionsfor the virtual object to the simulation client, wherein the simulationclient is configured to incorporate the virtual object in the simulationenvironment and animate the virtual object using the animationinstructions synchronized with the audio stream to convey the message.7. The method in claim 6, wherein the speech data included in the objectdata is configured for a one-sided virtual object output.
 8. The methodin claim 6, wherein the speech data included in the object data isconfigured for a conversation between a plurality of virtual objects. 9.The method in claim 6, wherein the speech data included in the objectdata is configured to provide a narration that emanates from the virtualobject provided as a feature in the simulation environment.
 10. Themethod in claim 6, wherein the speech data included in the object datais configured to advertise a product or a service to a physical user ofthe simulation client via the virtual object.
 11. The method as in claim6, wherein the interactive event associated with the simulationenvironment includes detecting that a virtual user is in a portion ofvirtual space in the simulation environment that causes the simulationclient to send the indication.
 12. The method as in claim 6, wherein theinteractive event occurring within the simulation environment includesdetecting a virtual user action that causes the simulation client tosend the indication.
 13. The method as in claim 6, wherein identifyingthe virtual object further comprises identifying user attributes for avirtual user associated with the interactive event, wherein the userattributes are used in part to identify the object data for the virtualobject.
 14. The method in claim 13, wherein the user attributes includeat least one of: personally identifying information, demographicinformation, a product purchase history, and a browsing history.
 15. Themethod in claim 13, further comprising constructing conversation textfor the virtual object using the speech data included in the object dataand the user attributes for the virtual user associated with theinteractive event, wherein the speech data includes conversation nodesthat are associated with the user attributes and the conversation nodesassociated with the user attributes are selected to construct theconversation text.
 16. The method in claim 6, wherein the object datafor the virtual object further includes virtual object graphics andanimation instructions for the virtual object and the animationinstructions include speech mark data used for facial animation of thevirtual object.
 17. The method in claim 6, further comprising: analyzingthe object data for the virtual object for attributes that correlate tointeractive events when the object data is uploaded to an object datastore; generating metadata for the attributes that correlate to theinteractive events; and linking the metadata to the object data for thevirtual object, wherein the metadata is used in part to select thevirtual object for inclusion in the simulation environment.
 18. Anon-transitory machine readable storage medium for a simulation client,the non-transitory machine readable storage medium having instructionsembodied thereon, the instructions when executed by a processor: monitorinteractive events for a simulation environment on the simulationclient; detect an interactive event occurring within the simulationenvironment executed on the simulation client, wherein the interactiveevent triggers a request for a virtual object linked to the interactiveevent stored in a computing service provider environment; send therequest for the virtual object to a virtual object service hosted by acomputing service provider, wherein the virtual object service obtainsan audio stream and animation instructions for the virtual object from atext-to-speech service that generates the audio stream and the animationinstructions from speech data included in object data for the virtualobject; receive an object data stream for the virtual object from thevirtual object service, wherein the object data stream includes theanimation instructions and the audio stream for the virtual object thatindirectly communicates a message to a user of the simulationenvironment as a background message in the simulation environment; andrender the virtual object as a background object in the simulationenvironment using the object data stream, wherein the virtual object isanimated using the animation instructions to convey a message containedin the audio stream, and animation of the virtual object is synchronizedwith the audio stream.
 19. The non-transitory machine readable storagemedium in claim 18, wherein the instructions that when executed by theprocessor further obtain user preferences for rendering the virtualobject in the simulation environment, wherein the user preferencesspecify categories of virtual objects that are allowed to be rendered inthe simulation environment.
 20. The non-transitory machine readablestorage medium in claim 18, wherein the simulation environment isrendered by the simulation client which is at least one of: a VR(Virtual Reality) environment, an AR (Augmented Reality) environment, ora mixed reality environment.